// import 'package:flutter/material.dart';
// import 'dart:ui' as ui;
// import 'dart:math' as math;
//
// class CustomIndicator extends Decoration {
//   // 指示器类型
//   final CustomIndicatorType type;
//   // 指示器高度
//   final double height;
//   // 指示器颜色
//   final Color color;
//   // 指示器宽度
//   double width;
//
//   CustomIndicator({@required this.type, this.height, this.color, this.width});
//
//   // 重写构造函数
//   @override
//   BoxPainter createBoxPainter([onChanged]) => _ACETabBarIndicatorPainter(
//         this,
//         type,
//         height,
//         color,
//         this.width,
//         onChanged,
//       );
// }
//
// class _ACETabBarIndicatorPainter extends BoxPainter {
//   final CustomIndicator decoration;
//   CustomIndicatorType type;
//   double height;
//   Color color;
//   double IndicatorWidth;
//
//   _ACETabBarIndicatorPainter(this.decoration, this.type, this.height,
//       this.color, this.IndicatorWidth, VoidCallback onChanged);
//
//   @override
//   void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) {
//     Paint paint = Paint()
//       ..color = color ?? _kIndicatorColor // 线段填充颜色
//       ..strokeWidth = height ?? _kIndicatorHeight // 宽度 既线段宽度
//       ..maskFilter = MaskFilter.blur(BlurStyle.solid, 1.0) // 阴影效果
//       ..strokeCap = type == CustomIndicatorType.LineRound ||
//               type == CustomIndicatorType.LineRectRound ||
//               type == CustomIndicatorType.LineRound01
//           ? StrokeCap.round
//           : StrokeCap.butt // 画笔笔触类型
//       ..style = PaintingStyle.fill; // 绘画风格，默认为填充
//
//     // 矩形的一级标题需要和文字重合
//     if (type == CustomIndicatorType.LineRect) {
//       Offset point1;
//       Offset point2;
//       if (IndicatorWidth == null) {
//         point1 = Offset(offset.dx - configuration.size.width * 0.1,
//             configuration.size.height - (height * 2));
//         point2 = Offset(offset.dx + configuration.size.width * 1.1,
//             configuration.size.height - (height * 2));
//       } else {
//         point1 = Offset(
//             offset.dx + 0.5 * (configuration.size.width - IndicatorWidth),
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx +
//                 0.5 * (configuration.size.width - IndicatorWidth) +
//                 IndicatorWidth,
//             configuration.size.height - height / 0.9);
//       }
//       canvas.drawLine(
//           point1,
//           point2,
//           paint
//             ..shader = ui.Gradient.linear(
//               point1,
//               point2,
//               [
//                 color ?? Color(0xFFFF5232),
//                 color ?? Color(0xFFFF8B35),
//               ],
//             ));
//     } else if (type == CustomIndicatorType.LineRectRound) {
//       Offset point1;
//       Offset point2;
//       if (IndicatorWidth == null) {
//         point1 = Offset(offset.dx - configuration.size.width * 0.1,
//             configuration.size.height - (height * 1));
//         point2 = Offset(offset.dx + configuration.size.width * 1.1,
//             configuration.size.height - (height * 1));
//       } else {
//         point1 = Offset(
//             offset.dx + 0.5 * (configuration.size.width - IndicatorWidth),
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx +
//                 0.5 * (configuration.size.width - IndicatorWidth) +
//                 IndicatorWidth,
//             configuration.size.height - height / 0.9);
//       }
//       canvas.drawLine(
//           point1,
//           point2,
//           paint
//             ..shader = ui.Gradient.linear(
//               point1,
//               point2,
//               [
//                 color ?? Color(0xFFFF5E1B),
//                 color ?? Color(0xFFEF9440),
//               ],
//             ));
//     } else if (type == CustomIndicatorType.LineRound) {
//       Offset point1;
//       Offset point2;
//       if (IndicatorWidth == null) {
//         point1 = Offset(offset.dx + configuration.size.width / 3.5,
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx -
//                 configuration.size.width / 3.5 +
//                 configuration.size.width,
//             configuration.size.height - height / 0.9);
//       } else {
//         point1 = Offset(
//             offset.dx + 0.5 * (configuration.size.width - IndicatorWidth),
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx +
//                 0.5 * (configuration.size.width - IndicatorWidth) +
//                 IndicatorWidth,
//             configuration.size.height - height / 0.9);
//       }
//
//       canvas.drawLine(
//           point1,
//           point2,
//           paint
//             ..shader = ui.Gradient.linear(
//               point1,
//               point2,
//               [
//                 color ?? Color(0xFFFF5E1B),
//                 color ?? Color(0xFFEF9440),
//               ],
//             ));
//     } else if (type == CustomIndicatorType.LineRound01) {
//       Offset point1;
//       Offset point2;
//       if (IndicatorWidth == null) {
//         point1 = Offset(offset.dx + configuration.size.width / 15.5,
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx -
//                 configuration.size.width / 15.5 +
//                 configuration.size.width,
//             configuration.size.height - height / 0.9);
//       } else {
//         point1 = Offset(
//             offset.dx + 0.5 * (configuration.size.width - IndicatorWidth),
//             configuration.size.height - height / 0.9);
//         point2 = Offset(
//             offset.dx +
//                 0.5 * (configuration.size.width - IndicatorWidth) +
//                 IndicatorWidth,
//             configuration.size.height - height / 0.9);
//       }
//
//       canvas.drawLine(
//           point1,
//           point2,
//           paint
//             ..shader = ui.Gradient.linear(
//               point1,
//               point2,
//               [
//                 color ?? Color(0xFFFF5E1B),
//                 color ?? Color(0xFFEF9440),
//               ],
//             ));
//     } else if (type == CustomIndicatorType.RoundCircle) {
//       canvas.drawRRect(
//           RRect.fromRectAndRadius(
//               Rect.fromLTWH(
//                   offset.dx + height,
//                   height - 1,
//                   configuration.size.width - height * 2,
//                   configuration.size.height - height * 2 - 2),
//               Radius.circular(_kIndicatorAngle)),
//           paint);
//     } else if (type == CustomIndicatorType.RoundCircleTwo) {
//       canvas.drawRRect(
//         RRect.fromRectAndRadius(
//           Rect.fromLTWH(offset.dx, height, configuration.size.width,
//               configuration.size.height - height * 2 - 2),
//           Radius.circular(50),
//         ),
//         paint,
//       );
//     } else if (type == CustomIndicatorType.LowerBracket) {
//       Rect rect = Rect.fromCenter(
//           center: Offset(offset.dx + configuration.size.width / 2,
//               configuration.size.height - 5),
//           width: height,
//           height: configuration.size.height - height * 2 - 5);
//       canvas.drawArc(rect, 0, 3.14, false, paint);
//     }
//   }
// }
//
// enum CustomIndicatorType {
//   LineRect, // 矩形指示器 用于一级tab
//   LineRectRound, //圆角矩形指示器
//   LineRound, // 圆角指示器 用于二级tab
//   LineRound01, // 圆角指示器 用于二级tab(长编辑)
//   RoundCircle, // 圆角circle
//   RoundCircleTwo, //圆角第二种
//   LowerBracket
// }
//
// // 默认指示器颜色
// const Color _kIndicatorColor = Color(0xFFEF9440);
// // 默认指示器高度
// const double _kIndicatorHeight = 10.0;
// // 指示器圆角
// const double _kIndicatorAngle = 12.5;
